home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 15 / BBS in a box XV-1.iso / Files / Internet / Misc / Uupc 3.1 sources.sit / uupc 3.1 sources Folder / Mac specific / Unix lib / genv.c / genv.c
Encoding:
C/C++ Source or Header  |  1994-08-21  |  6.0 KB  |  269 lines  |  [TEXT/KAHL]

  1. /* on */
  2. #define Upgrade        /* for alias stuff */
  3. /*         genv.c
  4.  
  5.  
  6.  
  7.         copyright (C) 1987 Stuart Lynne
  8.  
  9.         Copying and use of this program are controlled by the terms of the
  10.         Free Software Foundations GNU Emacs General Public License.
  11.  
  12.  
  13.         version        0.1        March 31/1987
  14.  
  15.  05mar90 - increased length of char arrays holding profile information to handle
  16.             longer file names.  [garym]
  17.  07apr90 - put profile file in System Folder and changed name to "UUPC Settings"
  18.  
  19. */
  20.  
  21. #ifdef THINK_C
  22. # include "unixlibproto.h"
  23. #endif THINK_C
  24.  
  25. #ifdef UNIX
  26. #include <sys/types.h>
  27. #endif
  28. #ifdef slmacaztec
  29. #include <mac/types.h>
  30. #endif
  31.  
  32. #include <stdio.h>
  33. #include <string.h>
  34.  
  35. #include "genv.h"
  36.  
  37. #define DMAILBOX    "root"
  38. #define    DNAME        "System Manager"
  39. #define DHOME        "root"
  40. #define    DDOMAIN        "mac.uucp"
  41. #define    DMAILDIR    "/mail"
  42. #define    DCONFDIR    "/mail/spool"
  43. #define    DSPOOLDIR    "/mail/spool"
  44. #define DPUBDIR        "/mail/spool/uucppublic"
  45. #define    DMAILSERVICE    "uunet"
  46. #define    DNODENAME    "mac"
  47. #define    DDEVICE        "modem"
  48. #define    DSPEED        "2400"
  49. #define    DTEMPDIR    "/tmp"
  50. #define DMAILCOPY    "mail.sent"
  51. #define DSIGNATURE    ".signature"
  52. #define DTIMEDIFF    "GMT"
  53. #define DDTIMEDIFF    ""            /* BH-C */
  54. #define DROUTEVIA    ""
  55. #define DSHORTNAME    ""
  56. #ifdef Upgrade
  57. # define DALIAS        ".alias"
  58. # define DPASSWORD    "uucp"
  59. # define DSLEEPTIME "5"
  60. #endif Upgrade
  61. #define DMBOX        ""            /* BH-C */
  62.  
  63. #define    TFILENAME    "tmpfile"
  64. #define    FILENAME     "%s/%s"
  65.  
  66. void genv();
  67.  
  68. extern SysEnvRec SysEnv;
  69. extern int settingsFileVRefNum;
  70. extern long int settingsFileDirID;
  71.  
  72. #ifndef THINK_C
  73.  
  74. #include "genv.proto.h"
  75. char *getenv();
  76.  
  77.  
  78. char    rmailbox[64];
  79. char    rname[64];
  80. char    rhome[64];
  81. char    rdomain[64];
  82. char    rmaildir[64];
  83. char    rconfdir[64];
  84. char    rspooldir[64];
  85. char    rpubdir[64];
  86. char    rmailserv[16];
  87. char     rnodename[16];
  88. char     rdevice[16];
  89. char     rspeed[8];
  90. char     rphone[64];
  91. char    rtempdir[64];
  92. char    rroutevia[512];
  93. char    rshortname[16];
  94. char    rpassword[64];
  95. char    rsleeptime[8];
  96. char    rmbox[16];                /* BH-C */
  97.  
  98. char    *mailbox = rmailbox;
  99. char    *name = rname;
  100. char    *home = rhome;
  101. char    *domain = rdomain;
  102. char    *maildir = rmaildir;
  103. char    *confdir = rconfdir;
  104. char    *spooldir = rspooldir;
  105. char    *pubdir = rpubdir;
  106. char    *mailserv = rmailserv;
  107. char     *nodename = rnodename;
  108. char     *device = rdevice;
  109. char     *speed = rspeed;
  110. char     *phone = rphone;
  111. char    *tempdir = rtempdir;
  112. char    *shortname = rshortname;
  113. char    *password = rpassword;
  114. char    *sleeptime = rsleeptime;
  115. char    *mbox = rmbox;            /* BH-C */
  116.  
  117. void genv(char **thename, char *envname, char *dflt)
  118. {
  119.     char * temp;
  120.     
  121.     if ((temp = getenv( envname )) == NULL) {
  122.         /* fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt ); /* */
  123.         temp = dflt;
  124.     }
  125.     strcpy( *thename, temp );
  126.     /*  fprintf( stderr, "genv: %s %s\n", envname, *thename ); /**/
  127. }
  128. #else
  129.  
  130. char    mailbox[80];
  131. char    name[80];
  132. char    home[80];
  133. char    domain[80];
  134. char    maildir[80];
  135. char    confdir[80];
  136. char    spooldir[80];
  137. char    pubdir[80];
  138. char    mailserv[16];
  139. char     nodename[16];
  140. char     device[128];
  141. char     speed[128];
  142. char     phone[128];
  143. char    tempdir[80];
  144. char    timediff[16];
  145. char    dlstimediff[16];        /* BH-C */
  146. char    signature[80];
  147. char    mailcopy[80];
  148. char    routevia[512];
  149. char    shortname[16];
  150. #ifdef Upgrade
  151. char    alias[80];
  152. char    password[64];
  153. char    sleeptime[8];
  154. #endif Upgrade
  155. char    mbox[16];                /* BH-C */
  156.  
  157. int        settingsFileRefNum;
  158.  
  159. /* off
  160. #define DEBUG /* */
  161.  
  162. /* use the resource mgr for now; profile opened in init code */
  163. void genv(char *thename, char *envname, char *dflt) {
  164.     Handle    strH;
  165.     Str255    envbuf;
  166.     
  167.     strcpy((char *)envbuf, envname);
  168.     CtoPstr((char *)envbuf);    /* convert to Pascal string */
  169.     if ((strH = GetNamedResource( 'STR ', envbuf )) == NULL) {
  170. /*         fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt ); */
  171.         strcpy(thename, dflt);
  172.     }
  173.     else {
  174.         if (*strH == 0) {
  175.             fprintf(stderr, "genv: %s is a null string\n", envname);
  176.         }
  177.         BlockMove((*strH)+1, thename, (Size)(**strH));
  178.         *(thename + (int)(**strH)) = '\0';
  179.         /* copy and convert to C string */
  180.     }
  181. # ifdef DONTDOTHIS
  182.     fprintf( stderr, "genv: %s %s\n", envname, *thename );
  183. # endif DONTDOTHIS
  184. }
  185. #endif
  186.  
  187. void loadenv(void)
  188. {
  189.     int i;
  190.     OSErr osErr;
  191.     FCBPBRec fcbPB;
  192.     Str255 rfName;
  193.     
  194.     if ((i = OpenRFPerm("\pUUPC Settings", 0, fsRdPerm)) == -1 &&
  195.         (i = OpenRFPerm("\pUUPC Settings", SysEnv.sysVRefNum, fsRdPerm)) == -1) {
  196.         fprintf( stderr, "ERROR: Can't find \"UUPC Settings\" file here or in System Folder\r" );
  197.         return;
  198.     }
  199.     
  200.     fcbPB.ioNamePtr = rfName;
  201.     fcbPB.ioVRefNum = 0;
  202.     fcbPB.ioFCBIndx = 0;
  203.     fcbPB.ioRefNum  = i;
  204.     
  205.     if ((osErr = PBGetFCBInfo(&fcbPB, FALSE)) != noErr) {
  206.         fprintf( stderr, "ERROR: Can't pin down location of \"UUPC Settings\" file\r" );
  207.     }
  208.     
  209.     settingsFileVRefNum = fcbPB.ioFCBVRefNum;
  210.     settingsFileDirID   = fcbPB.ioFCBParID;
  211.     
  212.     settingsFileRefNum = i;
  213.     
  214.     /* get environment var's */
  215.     genv( name, NAME, DNAME );
  216.     genv( mailbox, MAILBOX, DMAILBOX );
  217.     genv( home, HOME, DHOME );
  218.     genv( domain, DOMAIN, DDOMAIN );
  219.     genv( maildir, MAILDIR, DMAILDIR );
  220.     genv( confdir, CONFDIR, DCONFDIR );
  221.     genv( spooldir, SPOOLDIR, DSPOOLDIR );
  222.     genv( pubdir, PUBDIR, DPUBDIR );
  223.     genv( mailserv, MAILSERVICE, DMAILSERVICE );
  224.     genv( nodename, NODENAME, DNODENAME );
  225.     genv( device, DEVICE, DDEVICE );
  226.     genv( speed, SPEED, DSPEED );
  227.     genv( tempdir, TEMPDIR, DTEMPDIR );
  228.     genv( timediff, TIMEDIFF, DTIMEDIFF);
  229.     genv( dlstimediff, DLSTIMEDIFF, DDTIMEDIFF);    /* BH-C */
  230.     genv( mailcopy, MAILCOPY, DMAILCOPY);
  231.     genv( signature, SIGNATURE, DSIGNATURE);
  232.     genv( routevia, ROUTEVIA, DROUTEVIA);
  233.     genv( shortname, SHORTNAME, DSHORTNAME);
  234. #ifdef Upgrade
  235.     genv( alias, ALIAS, DALIAS);
  236.     genv( password, PASSWORD, DPASSWORD);
  237.     genv( sleeptime, SLEEPTIME, DSLEEPTIME);
  238. #endif Upgrade
  239.     genv( mbox, MBOX, DMBOX);            /* BH-C */
  240.  
  241.     CloseResFile(i);    /* so we can run pcmail while uupc is running in background */
  242.     
  243.     if (strlen(shortname) == 0) {
  244.         strcpy(shortname, nodename);
  245.     }
  246. }
  247.  
  248. void mkfilename(char *filename, char *dirname, char *name)
  249. {
  250.     if (strchr(name, ':') != NULL) {
  251.         if (*name == ':') {
  252.             sprintf(filename, "%s%s", dirname, name );
  253.         } else {
  254.             strcpy(filename, name);
  255.         }
  256.     }
  257.     else sprintf( filename, FILENAME, dirname, name );    
  258.     /* fprintf( stderr, "New filename %s\n", filename );  /**/    
  259. }
  260.  
  261.  
  262. #ifdef TEST
  263. main(void)
  264. {
  265.     loadenv();
  266. }
  267. #endif
  268.  
  269.